/**
 * Semantic-release 插件，用于同步安装程序 package.json 版本
 */

const fs = require('fs');
const path = require('path');

// 此函数在 semantic-release 的 "prepare" 步骤中运行
function prepare(_, { nextRelease, logger }) {
  // 定义安装程序 package.json 文件的路径
  const file = path.join(process.cwd(), 'tools/installer/package.json');

  // 如果文件不存在，跳过同步并记录消息
  if (!fs.existsSync(file)) return logger.log('未找到安装程序 package.json，正在跳过');

  // 读取并解析 package.json 文件
  const pkg = JSON.parse(fs.readFileSync(file, 'utf8'));

  // 使用下一个发布版本更新 version 字段
  pkg.version = nextRelease.version;

  // 将更新后的 JSON 写回文件
  fs.writeFileSync(file, JSON.stringify(pkg, null, 2) + '\n');

  // 记录成功消息
  logger.log(`已同步安装程序 package.json 至版本 ${nextRelease.version}`);
}

// 导出 prepare 函数供 semantic-release 使用
module.exports = { prepare };
